ナスダック総合指数(^IXIC)のアノマリー

ナスダック総合指数(^IXIC) の過去の値動きの傾向(アノマリー)を確認できます。集計年数や期間を指定して、どの時期に上がりやすい・下がりやすいかを把握できます。 詳しい見方や操作方法は、下の「使い方ガイド」からご覧ください。

指定期間の集計対象:

ナスダック総合指数(^IXIC)の過去10年の平均年初来騰落率は +17.68%です。

過去10年で指定期間(11月7日から60日間)の騰落率は +1.93%です。

5勝2敗で勝率は71.43%です。

開始日開始価格終了日終了価格リターン騰落率 (%)
2024 2024-11-07 19,269.4609 2025-01-05 19,621.6797 352.2188 1.83
2023 2023-11-07 13,639.8604 2024-01-05 14,524.0703 884.2100 6.48
2022 2022-11-07 10,564.5195 2023-01-05 10,305.2402 -259.2793 -2.45
2019 2019-11-07 8,434.5195 2020-01-05 9,020.7695 586.2500 6.95
2018 2018-11-07 7,570.7500 2019-01-05 6,738.8599 -831.8901 -10.99
2017 2017-11-07 6,767.7798 2018-01-05 7,136.5601 368.7803 5.45
2016 2016-11-07 5,166.1699 2017-01-05 5,487.9399 321.7700 6.23
平均 10,201.8657 10,405.0171 203.15 1.93
365日(前日終値比)平均(過去 15 年平均)[横=月 / 縦=日]
マイナス ±0%付近 プラス ※ 前年末終値を基準。非営業日は直前値で補完。2/29は除外。
365日表示の集計対象:
日\月 1月2月3月4月5月6月7月8月9月10月11月12月
1日 0.00% +2.66% +3.43% +3.67% +4.23% +5.95% +8.72% +11.00% +11.99% +10.83% +12.80% +15.60%
2日 +0.22% +2.94% +3.81% +3.71% +4.52% +6.34% +9.04% +10.39% +12.02% +10.74% +12.80% +15.62%
3日 +0.31% +2.67% +3.39% +3.23% +4.55% +6.09% +9.27% +10.85% +11.35% +10.61% +13.27% +15.45%
4日 +0.32% +3.11% +3.43% +2.69% +4.51% +6.37% +9.27% +10.74% +11.39% +11.03% +13.51% +15.36%
5日 +0.13% +2.92% +3.43% +2.64% +4.32% +6.68% +9.57% +10.28% +11.41% +11.48% +13.84% +15.36%
6日 +0.25% +3.06% +2.95% +2.97% +4.27% +7.06% +9.65% +10.51% +11.23% +11.56% +14.25% +15.61%
7日 +0.24% +3.11% +2.69% +2.78% +4.35% +7.16% +9.77% +10.53% +11.43% +11.24% +14.00% +15.81%
8日 +0.62% +2.93% +2.58% +2.93% +4.55% +7.30% +9.66% +10.52% +11.20% +11.20% +14.22% +15.87%
9日 +0.77% +3.16% +2.60% +3.71% +4.42% +7.10% +10.03% +10.63% +11.23% +11.19% +13.44% +15.54%
10日 +0.94% +3.21% +2.24% +3.42% +4.64% +7.09% +10.31% +10.33% +11.16% +10.93% +13.65% +15.57%
11日 +1.15% +3.18% +2.22% +3.38% +4.39% +6.60% +10.07% +10.38% +11.65% +10.95% +14.11% +15.66%
12日 +1.34% +3.62% +1.94% +3.30% +4.42% +6.79% +10.40% +10.75% +11.91% +11.27% +13.89% +15.59%
13日 +1.00% +3.95% +2.30% +3.60% +4.29% +6.66% +10.57% +11.16% +11.89% +11.34% +13.89% +15.61%
14日 +1.16% +4.29% +2.40% +3.66% +4.70% +6.84% +10.70% +11.15% +12.23% +11.43% +13.75% +15.20%
15日 +1.15% +4.62% +2.55% +3.43% +4.89% +6.98% +10.86% +11.20% +12.45% +11.53% +13.93% +15.48%
16日 +1.23% +4.67% +2.25% +3.55% +4.91% +6.96% +10.79% +11.21% +12.36% +11.98% +14.12% +15.56%
17日 +1.45% +4.58% +2.73% +3.66% +4.68% +7.17% +10.76% +10.99% +12.18% +12.15% +13.95% +15.61%
18日 +1.50% +4.47% +2.54% +3.47% +4.77% +7.49% +10.95% +10.70% +12.24% +12.15% +14.01% +15.71%
19日 +1.53% +4.59% +2.70% +3.37% +4.76% +7.58% +11.05% +10.52% +12.46% +11.64% +14.09% +15.50%
20日 +1.74% +4.43% +2.74% +3.31% +4.89% +7.46% +11.19% +10.43% +12.02% +11.68% +14.06% +15.63%
21日 +1.67% +3.88% +2.83% +3.04% +5.09% +7.44% +11.27% +10.43% +11.68% +12.10% +14.18% +15.72%
22日 +2.02% +3.82% +2.62% +3.33% +5.10% +7.70% +11.48% +10.53% +11.55% +12.06% +14.28% +15.87%
23日 +2.25% +3.67% +2.32% +3.72% +4.88% +7.99% +11.35% +10.87% +11.23% +12.13% +14.21% +16.23%
24日 +2.15% +3.63% +2.85% +3.97% +4.99% +7.53% +10.99% +10.67% +11.17% +12.44% +14.45% +16.26%
25日 +2.24% +3.30% +2.68% +4.08% +5.32% +7.41% +10.93% +10.76% +11.05% +12.53% +14.61% +16.26%
26日 +2.51% +3.50% +3.22% +4.30% +5.65% +7.32% +11.05% +11.14% +11.01% +12.02% +14.76% +16.71%
27日 +1.77% +3.13% +2.77% +4.56% +6.25% +7.38% +11.03% +11.26% +11.24% +12.50% +14.88% +16.68%
28日 +1.97% +3.12% +2.61% +4.58% +6.24% +7.63% +11.29% +11.44% +10.98% +12.75% +15.32% +16.43%
29日 +1.92% +3.13% +4.69% +6.25% +7.81% +11.42% +11.95% +10.78% +12.83% +15.40% +16.53%
30日 +1.81% +3.45% +4.26% +6.21% +8.22% +11.26% +12.01% +10.85% +12.63% +15.73% +16.16%
31日 +1.96% +3.54% +6.02% +11.35% +12.11% +12.53% +16.18%

過去10年の 30日間 [11月7日 ~ 12月6日] の リターンランキング

順位 銘柄 平均リターン(%) 勝数 負数
ode})の過去${years}年の平均年初来騰落率は ${annualAverageReturn}%です。

過去${years}年で指定期間(${formattedStartDate}から${periodLength}日間)の騰落率は ${localAveragePerformance}%です。

${wins}勝${losses}敗で勝率は${winRate}%です。

`; const performanceTableBody = document.getElementById('performance-table-body'); performanceTableBody.innerHTML = ''; let currentYearDataset = null; if (includeCurrentYear) { const currentYear = new Date(settings.startDate).getFullYear(); currentYearDataset = datasets.find(d => d.year === currentYear); if (currentYearDataset) { for (let i = 0; i < datasets.length; i++) { if (datasets[i].year === currentYear) { datasets.splice(i, 1); break; } } } } if (currentYearDataset) { insertDatasetRow(currentYearDataset, 'top'); } datasets.forEach(dataset => { insertDatasetRow(dataset, 'bottom'); }); // 平均行追加 const summaryRow = document.createElement('tr'); const summaryCells = [ { text: '平均', bold: true }, { text: '', bold: true }, { text: formatAveragePrice(averageStartPrice), bold: true }, { text: '', bold: true }, { text: formatAveragePrice(averageEndPrice), bold: true }, { text: averageReturn.toFixed(2), bold: true }, { text: localAveragePerformance, bold: true } ]; summaryCells.forEach((cellData, index) => { const cell = document.createElement('td'); cell.textContent = cellData.text; if (cellData.bold) { cell.style.fontWeight = 'bold'; } summaryRow.appendChild(cell); }); const avgReturnVal = parseFloat(averageReturn); const avgPerfVal = parseFloat(localAveragePerformance); const avgEndPriceCell = summaryRow.cells[4]; if (!isNaN(avgReturnVal)) { if (avgReturnVal > 0) { avgEndPriceCell.classList.add('table-cell', 'positive'); summaryRow.cells[5].classList.add('table-cell', 'positive'); } else if (avgReturnVal < 0) { avgEndPriceCell.classList.add('table-cell', 'negative'); summaryRow.cells[5].classList.add('table-cell', 'negative'); } else { avgEndPriceCell.classList.add('table-cell', 'neutral'); summaryRow.cells[5].classList.add('table-cell', 'neutral'); } } if (!isNaN(avgPerfVal)) { if (avgPerfVal > 0) { summaryRow.cells[6].classList.add('table-cell', 'positive'); } else if (avgPerfVal < 0) { summaryRow.cells[6].classList.add('table-cell', 'negative'); } else { summaryRow.cells[6].classList.add('table-cell', 'neutral'); } } performanceTableBody.appendChild(summaryRow); if (!multiYearChart) { const chartDom = document.getElementById('multiYearChart'); if (chartDom) { multiYearChart = echarts.init(chartDom, 'customTheme'); } } // 表示モードに応じてシリーズを作成 const series = datasets.map(dataset => ({ name: dataset.year.toString(), type: 'line', data: displayMode === 'price' ? dataset.prices : dataset.rates, showSymbol: false, smooth: true, connectNulls: false })); if (currentYearDataset) { series.unshift({ name: currentYearDataset.year.toString(), type: 'line', data: displayMode === 'price' ? currentYearDataset.prices : currentYearDataset.rates, showSymbol: false, smooth: true, connectNulls: false }); } let xAxisData = []; if (currentYearDataset && currentYearDataset.dates) { xAxisData = currentYearDataset.dates.slice(); } datasets.forEach(d => { if (d.dates && d.dates.length > xAxisData.length) { xAxisData = d.dates; } }); // 全データセットの平均を計算 const averageData = []; for (let i = 0; i < xAxisData.length; i++) { let sum = 0; let count = 0; if (displayMode === 'price') { // 価格モードの場合 if (currentYearDataset && currentYearDataset.prices[i] != null && !isNaN(currentYearDataset.prices[i])) { sum += currentYearDataset.prices[i]; count++; } for (let d of datasets) { if (d.prices[i] != null && !isNaN(d.prices[i])) { sum += d.prices[i]; count++; } } } else { // 騰落率モードの場合 if (currentYearDataset && currentYearDataset.rates[i] != null && !isNaN(currentYearDataset.rates[i])) { sum += currentYearDataset.rates[i]; count++; } for (let d of datasets) { if (d.rates[i] != null && !isNaN(d.rates[i])) { sum += d.rates[i]; count++; } } } averageData.push(count > 0 ? sum / count : NaN); } // 平均線をシリーズに追加 series.unshift({ name: '平均', type: 'line', data: averageData, showSymbol: false, smooth: true, lineStyle: { width: 4 }, connectNulls: false }); const isLongLegend = (datasets.length + (currentYearDataset ? 1 : 0)) >= 11; // タイトルとY軸の設定を表示モードに応じて変更 const chartTitle = displayMode === 'price' ? `${serverData.companyName}の指定期間価格推移(過去${years}年間の推移)` : `${serverData.companyName}の指定期間騰落率(過去${years}年間の推移)`; const yAxisFormatter = displayMode === 'price' ? function(value) { return formatAveragePrice(value); } : function(value) { return `${value}%`; }; const tooltipFormatter = function(params) { if (!params || params.length === 0) return ''; const dateStr = dayjs(params[0].axisValue).format('MM月DD日'); let tooltipText = `${dateStr}
`; params.forEach(param => { let value = param.value; if (displayMode === 'price') { value = formatAveragePrice(value); tooltipText += `
${param.marker} ${param.seriesName}: ${value}
`; } else { if (typeof value === 'number') { value = value.toFixed(2); } tooltipText += `
${param.marker} ${param.seriesName}: ${value}%
`; } }); return tooltipText; }; const legendData = ['平均']; if (currentYearDataset) legendData.push(String(currentYearDataset.year)); legendData.push(...datasets.map(d => String(d.year))); const option = { grid: { top: '15%', left: '13%', right: '8%', bottom: '25%' }, title: { text: chartTitle, subtext: `集計期間: ${dayjs(settings.startDate).format('M/D')}~${dayjs(calculatePeriodEndDate(settings.startDate, periodLength)).format('M/D')}(${periodLength}日間)`, left: 'center', top: '5%', textStyle: { fontSize: fontSize }, subtextStyle: { fontSize: fontSize } }, tooltip: { trigger: 'axis', textStyle: { fontSize: fontSize + 2 }, formatter: tooltipFormatter }, legend: { data: series.map(s => s.name), formatter: function(name) { if (isLongLegend && name.length === 4 && name !== '平均') { return name.slice(-2); } return name; }, bottom: '5%', orient: 'horizontal', left: 'center', itemWidth: 10, itemHeight: 10, itemGap: 4, textStyle: { fontSize: fontSize }, width: '80%', pageIconColor: '#5470C6', pageIconInactiveColor: '#aaa', pageTextStyle: { color: '#5470C6', fontSize: fontSize }, pageButtonItemGap: 5, pageButtonGap: 5, backgroundColor: 'rgba(255, 255, 255, 0.8)', borderColor: '#ccc', borderWidth: 1, borderRadius: 4, padding: [5, 10] }, xAxis: { type: 'category', data: xAxisData, axisLabel: { fontSize: fontSize, formatter: function(value) { return dayjs(value).format('MM月DD日'); }, align: 'right', verticalAlign: 'middle', margin: 10 }, axisTick: { alignWithLabel: true }, axisLine: { lineStyle: { color: '#333' } }, splitLine: { show: true, lineStyle: { type: 'dashed', color: '#eee' } } }, yAxis: { type: 'value', axisLabel: { formatter: yAxisFormatter, fontSize: fontSize }, scale: true }, series: series, graphic: [commonGraphic] }; multiYearChart.setOption(option, { notMerge: true }); } updateFontSize(); initializeTimezoneSelector(); if (!storedStartDateUnified || !storedEndDateUnified) { const now = new Date(); const oneYearAgo = new Date(); oneYearAgo.setFullYear(oneYearAgo.getFullYear() - 1); startDateUnifiedInput.value = formatDateLocal(oneYearAgo); endDateUnifiedInput.value = formatDateLocal(now); localStorage.setItem('startDateUnified', startDateUnifiedInput.value); localStorage.setItem('endDateUnified', endDateUnifiedInput.value); } drawMonthDayChart(); drawMultiYearChart(); drawIntradayChart(); if (!storedStartDateUnified || !storedEndDateUnified) { updateUnifiedDatesFromPeriod(); } updateUnifiedCharts(); }); // 残りの関数(shareChart、sanitizeForHashtag、getTweetText)はそのまま function shareChart(chartId) { // 既存のコードをそのまま使用 const code = "^IXIC" || document.getElementById('stock-search').value.trim(); let rangeOrDates = {}; if (chartId === 'intradayChart') { rangeOrDates.range = localStorage.getItem('intradayChartRange') || '60d'; } else if (chartId === 'multiYearChart') { rangeOrDates.years = settings.years; rangeOrDates.period = settings.period; rangeOrDates.displayMode = settings.displayMode; } else if (chartId === 'monthDayChart') { rangeOrDates.years = settings.years; rangeOrDates.displayMode = settings.displayMode; } else { const startDateElement = document.getElementById('startDateUnified'); const endDateElement = document.getElementById('endDateUnified'); const selectedMonthElement = document.getElementById('monthSelectUnified'); const startDate = startDateElement ? startDateElement.value : ''; const endDate = endDateElement ? endDateElement.value : ''; const selectedMonth = selectedMonthElement ? selectedMonthElement.value : ''; rangeOrDates.startDate = startDate; rangeOrDates.endDate = endDate; if (selectedMonth) { rangeOrDates.month = selectedMonth; } } const tweetText = getTweetText(chartId, serverData.companyName, code, rangeOrDates); let fileName = ''; if (chartId === 'intradayChart') { fileName = `${chartId}_${code}_${rangeOrDates.range}.png`; } else if (chartId === 'multiYearChart') { fileName = `${chartId}_${code}_years${rangeOrDates.years}_period${rangeOrDates.period}_${rangeOrDates.displayMode}.png`; } else if (chartId === 'monthDayChart') { fileName = `${chartId}_${code}_years${rangeOrDates.years}_${rangeOrDates.displayMode}.png`; } else { fileName = `${chartId}_${code}_${rangeOrDates.startDate}_${rangeOrDates.endDate}.png`; } const offScreenDiv = document.createElement('div'); offScreenDiv.style.width = '600px'; offScreenDiv.style.height = '314px'; offScreenDiv.style.position = 'absolute'; offScreenDiv.style.left = '-9999px'; offScreenDiv.style.top = '0'; offScreenDiv.style.backgroundColor = '#fff'; document.body.appendChild(offScreenDiv); const offScreenChartContainer = document.createElement('div'); offScreenChartContainer.style.width = '600px'; offScreenChartContainer.style.height = '314px'; offScreenDiv.appendChild(offScreenChartContainer); const originalChartElement = document.getElementById(chartId); const originalChartInstance = echarts.getInstanceByDom(originalChartElement); if (!originalChartInstance) { document.body.removeChild(offScreenDiv); return; } const chartOption = originalChartInstance.getOption(); const fixedFontSize = 13; function setFixedFontSize(obj, fixedFontSize) { for (const key in obj) { if (obj.hasOwnProperty(key)) { if (key === 'graphic') { continue; } if (key === 'fontSize') { obj[key] = fixedFontSize; } else if (typeof obj[key] === 'object' && obj[key] !== null) { setFixedFontSize(obj[key], fixedFontSize); } } } } setFixedFontSize(chartOption, fixedFontSize); const offScreenChartInstance = echarts.init(offScreenChartContainer, null, { width: 600, height: 314, }); offScreenChartInstance.setOption(chartOption); offScreenChartInstance.on('finished', function() { const imageData = offScreenChartInstance.getDataURL({ type: 'png', pixelRatio: 1, backgroundColor: '#fff', }); document.body.removeChild(offScreenDiv); fetch('/jp/upload.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body: `image=${encodeURIComponent(imageData)}&filename=${encodeURIComponent(fileName)}` }) .then(response => response.json()) .then(data => { let shareUrl = `https://anomalybase.com/jp/chart/${encodeURIComponent(code)}?chart=${chartId}`; if (chartId === 'intradayChart') { shareUrl += `&range=${encodeURIComponent(rangeOrDates.range)}`; } else if (chartId === 'multiYearChart') { shareUrl += `&years=${encodeURIComponent(rangeOrDates.years)}&period=${encodeURIComponent(rangeOrDates.period)}&displayMode=${encodeURIComponent(rangeOrDates.displayMode)}`; } else if (chartId === 'monthDayChart') { shareUrl += `&years=${encodeURIComponent(rangeOrDates.years)}&displayMode=${encodeURIComponent(rangeOrDates.displayMode)}`; } else { shareUrl += `&startDate=${encodeURIComponent(rangeOrDates.startDate)}&endDate=${encodeURIComponent(rangeOrDates.endDate)}`; if (rangeOrDates.month) { shareUrl += `&month=${encodeURIComponent(rangeOrDates.month)}`; } } if (data.url) { shareUrl += `&imageUrl=${encodeURIComponent(data.url)}`; } const twitterUrl = `https://twitter.com/intent/tweet?text=${encodeURIComponent(tweetText)}&url=${encodeURIComponent(shareUrl)}`; window.open(twitterUrl, '_blank'); }) .catch(error => { let shareUrl = `https://anomalybase.com/jp/chart/${encodeURIComponent(code)}?chart=${chartId}`; if (chartId === 'intradayChart') { shareUrl += `&range=${encodeURIComponent(rangeOrDates.range)}`; } else if (chartId === 'multiYearChart') { shareUrl += `&years=${encodeURIComponent(rangeOrDates.years)}&period=${encodeURIComponent(rangeOrDates.period)}&displayMode=${encodeURIComponent(rangeOrDates.displayMode)}`; } else if (chartId === 'monthDayChart') { shareUrl += `&years=${encodeURIComponent(rangeOrDates.years)}&displayMode=${encodeURIComponent(rangeOrDates.displayMode)}`; } else { shareUrl += `&startDate=${encodeURIComponent(rangeOrDates.startDate)}&endDate=${encodeURIComponent(rangeOrDates.endDate)}`; if (rangeOrDates.month) { shareUrl += `&month=${encodeURIComponent(rangeOrDates.month)}`; } } const twitterUrl = `https://twitter.com/intent/tweet?text=${encodeURIComponent(tweetText)}&url=${encodeURIComponent(shareUrl)}`; window.open(twitterUrl, '_blank'); }); }); } function sanitizeForHashtag(companyName) { let sanitized = companyName.trim(); sanitized = sanitized.replace(/\s+/g, ''); sanitized = sanitized.replace(/[^\p{L}\p{N}_ー]/gu, ''); sanitized = sanitized.replace(/^_+/, ''); sanitized = sanitized.replace(/_+$/, ''); if (sanitized.length > 0 && sanitized[0] !== '#') { sanitized = '#' + sanitized; } if (sanitized.length === 0) { sanitized = '#AnomalyBase'; } return sanitized; } function getTweetText(chartId, companyName, code, rangeOrDates) { const hashtag = sanitizeForHashtag(companyName); let tweetText = ""; const displayModeText = rangeOrDates.displayMode === 'price' ? '価格推移' : '騰落率'; switch(chartId) { case 'monthDayChart': tweetText = `${companyName}の年間アノマリー(${code}) ${hashtag}`; break; case 'weekdayChart': tweetText = `${companyName}の曜日別アノマリー(${code}) ${hashtag}`; break; case 'dailyAverageChart': tweetText = `${companyName}の日別アノマリー(${code}) ${hashtag}`; break; case 'intradayChart': tweetText = `${companyName}の日中アノマリー(${code}) ${hashtag}`; break; case 'multiYearChart': tweetText = `${companyName}の過去${rangeOrDates.years}年の各年の${displayModeText} (${rangeOrDates.period}日間) ${hashtag}`; break; default: tweetText = `${companyName}のアノマリー(${code}) ${hashtag}`; } return tweetText; }